package ru.zombator.taskman.dbadmin.actions;

import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
import java.util.List;

import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.SubMonitor;
import org.eclipse.jface.operation.IRunnableWithProgress;

import ru.zombator.taskman.core.dbclient.DbException;
import ru.zombator.taskman.core.dbclient.IDbClient;
import ru.zombator.taskman.core.domain.IPerson;

/**
 * Задача по обновлению списка пользователей согласно данным в БД
 * @author nvamelichev
 *
 */
public class UpdateTask implements IRunnableWithProgress {
	private IDbClient client;
	private List<IPerson> persons;
	
	public UpdateTask(IDbClient client) {
		this.client = client;
	}
	
	@Override
	public void run(IProgressMonitor monitor) throws InvocationTargetException,
			InterruptedException {
		SubMonitor subMon = SubMonitor.convert(monitor, "Загрузка данных о пользователях", IProgressMonitor.UNKNOWN);
		persons = new ArrayList<IPerson>();		
		try {
			persons = client.getUsers();
		} catch (DbException e) {
			throw new InvocationTargetException(e);
		} finally {
			if (subMon != null)
				subMon.done();
		}
	}
	
	/**
	 * возвращает результаты запроса "дай мне всех пользователей"
	 * @return
	 */
	public List<IPerson> getResults() {
		return persons;
	}
}
